package modelo.mapa;

// paquetes de proyecto
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import java.util.Observable;

import vista.VistaCasillero;
import vista.VistaHormiga;

import modelo.interfaces.Posicionable;

public class Casillero extends Observable implements Serializable {

	private static final long serialVersionUID = -4576158453636524718L;
	// Atributos
	private boolean Es_camino;
	private Posicion posicion;
	private List<Posicionable> Posicionables;

	public Casillero(int X, int Y) {
		this.Es_camino = false;
		this.posicion = new Posicion(X, Y);
		this.Posicionables = new LinkedList<Posicionable>();
		this.addObserver(new VistaCasillero(this));
		// this.setPosicion(0, 0);
	}

	/*
	 * public Casillero (Posicion posicion){ this.posicion = posicion;
	 * this.Posicionables = new List(a); }
	 */
	public boolean getEsCamino() {
		return this.Es_camino;
	}

	public void setEsCamino(boolean esCamino) {
		this.Es_camino = esCamino;
		this.setChanged();
		/*System.out.print(this.getPosicion().getX());
		System.out.println("   ");
		System.out.println(this.getPosicion().getY());*/
		this.notifyObservers();
		
	}

	public Posicion getPosicion() {
		return this.posicion;
	}

	public void setPosicion(int x, int y) {
		this.posicion.setX(x);
		this.posicion.setY(y);
	}

	public void agregarElemento(Posicionable nuevo_elemento) {
		this.Posicionables.add(nuevo_elemento);
	}

	public void sacarElemento(Posicionable elemento) {
		this.Posicionables.remove(elemento);
	}

	public List<Posicionable> getListado() {
		return this.Posicionables;
	}
	public void RecrearVista(){
		 addObserver(new VistaCasillero(this));
		 setChanged();
		 notifyObservers();

	}
}
